home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PRINTER / EPSON.ARJ / COLRVIEW.C < prev    next >
Text File  |  1985-02-23  |  5KB  |  251 lines

  1. /*
  2. Colrview.c - views file on screen and optionally sends to JX-80 printer.
  3.  
  4. 02/19/85 by Ward Christensen
  5.  
  6.   TEST VERSION - not really ready for prime time...
  7.  
  8. Uses \x type imbeds in a file to select colors.  A single space is printed
  9. every time a \ is encountered.  The character following the \ picks the
  10. color or function:
  11.  
  12.     n    normal (black)
  13.     r    red
  14.     b    blue
  15.     g    green
  16.     y    yellow
  17.     p    purple
  18.     o    orange
  19.  
  20.     m    turn off colors from here on
  21. */
  22.  
  23. #include "stdio.h"
  24. #define MAXLEN 160
  25.  
  26.     int printer,parm,mono,i;
  27.     FILE *fi,*pr;
  28.  
  29. main(argc,argv)
  30. int argc;
  31. char *argv[];
  32. {
  33.  
  34.     char c, line[MAXLEN], *p;
  35.  
  36.     printer=0; mono=0;
  37.     bwhite();green();
  38.     printf("Color");blue();printf("view");yellow();
  39.     printf(" Version 1.0, 2/16/85 by Ward Christensen\n");
  40.     black();
  41.  
  42.     if (argc==1)
  43.     {   fputs("Usage: colrview [-options] filename\n",        stderr);
  44.     fputs("Options: (m)ono, (c)ondensed, (p)rinter\n",    stderr);
  45.     fputs("         (s)uperscript [to even ribbon wear]\n",    stderr);
  46.     fputs("     ex: colrview -pc test.txt\n",        stderr);
  47.     fputs("         (option p must precede option c)\n",    stderr);
  48.     fputs("Color display & ANSI.SYS req'd.\n",        stderr);
  49.     exit(1);
  50.     }
  51.  
  52.     parm=1;
  53.     if(argv[1][0]=='-')
  54.     {   ++parm;    /* so file open gets filename */
  55.     for(i=1;i<strlen(argv[1]);++i)
  56.     {   switch(argv[1][i])
  57.         {   case 'm':    /* monochrome */
  58.             mono=1;
  59.             break;
  60.         case 'p':    /* printer */
  61.             ++printer;
  62.             if((pr = fopen("lpt1:", "w")) == NULL) 
  63.             {   printf("\tCan't open printer\n");
  64.             exit();
  65.             }
  66.             break;
  67.         case 'c':    /* condensed */
  68.             if(printer) pr_setup();
  69.             break;
  70.         case 's':    /* superscript */
  71.             lprintf("\033S1");
  72.             break;
  73.         default:
  74.             printf("Unknown switch: %c\n",argv[2][i]);
  75.             exit(1);
  76.         }
  77.     }
  78.     }
  79.  
  80.     if((fi = fopen(argv[parm], "r")) == NULL) 
  81.     {   printf("\tCan't open todo.txt in root dir\n");
  82.     exit();
  83.     }
  84.  
  85.     p = line;
  86.     while(p != NULL)
  87.     {   p = fgets(line,MAXLEN,fi);
  88.     colorview(line);
  89.     }
  90.     fclose(fi);
  91.     puts("\n{DONE}");
  92. }
  93.  
  94.  
  95. /* printer setup */
  96.  
  97. /*    \033S0    superscript mode
  98.     \033A\006    12 lpi
  99.     \033M    Elite on
  100.     \017    condensed on
  101.     \033N\002    skip-over-perf to 2
  102. */
  103.  
  104. pr_setup()
  105. {   lprintf("\033S0\033A\006\033M\017\033N\002");
  106. }
  107.  
  108. colorview(line)
  109. char *line;
  110. {   int i,len;
  111.     char c;
  112.     len=strlen(line);
  113.     if(len==0)
  114.     {   puts(" ");
  115.     return(0);
  116.     }
  117.     for(i=0;i<len;++i)
  118.     {   c=line[i];
  119.     switch(c)
  120.     {   case '\\':
  121.         ++i;
  122.         putchar(' ');
  123.         if(printer) lputc(' ');
  124.         c=line[i];
  125.             if(c=='n') black();
  126.         else    if(c=='r') red();
  127.         else    if(c=='b') blue();
  128.         else    if(c=='g') green();
  129.         else    if(c=='p') magenta();
  130.         else    if(c=='o') orange();
  131.         else    if(c=='m') 
  132.             {    mono=1;    /* turn off color    */
  133.                 black();/* kill curr color    */
  134.             }
  135.         break;
  136.          case 0x8d:    /* hi-bit c/r */
  137.         case 0x0d:
  138.         case 0x0a:
  139.         break;
  140.         default: putchar(c);
  141.         if(printer) lputc(c);
  142.     }
  143.     }
  144.     printf("\n");
  145.     if(printer) lprintf("\n");
  146. }
  147.  
  148.  
  149.  
  150. lputc(c)
  151. char c;
  152. {   putc(c,pr);
  153. }
  154.  
  155.  
  156.  
  157. lprintf(line)
  158. char *line;
  159. {   fputs(line,pr);
  160. }
  161.  
  162. /*
  163. colors.h: color screen subroutines - for ansi.sys
  164. GLOBAL references: 
  165.     printer        >0 if output is to go to the printer
  166.     mono        >1 if printer is in monochrome mode.
  167.  
  168. */
  169.  
  170.  
  171. nor()        { printf("\033[0m"); } /* note resets background to black */
  172.  
  173. high()        { printf("\033[1m"); }
  174.  
  175. revvid()    { printf("\033[7m"); }
  176.  
  177. black()    
  178. {    printf("\033[30m");
  179.     if(printer)
  180.         lprintf("\033r0");
  181. }
  182. red()    
  183. {    if(mono) 
  184.         return(0);
  185.     printf("\033[31m");
  186.     if(printer)
  187.         lprintf("\033r1");
  188. }
  189. green()    
  190. {    if(mono) 
  191.         return(0);
  192.     printf("\033[32m");
  193.     if(printer)
  194.         lprintf("\033r6");
  195. }
  196. yellow()
  197. {    if(mono) 
  198.         return(0);
  199.     printf("\033[33m");
  200.     if(printer)
  201.         lprintf("\033r4");
  202. }
  203. blue()    
  204. {    if(mono) 
  205.         return(0);
  206.     printf("\033[34m");
  207.     if(printer)
  208.         lprintf("\033r2");
  209. }
  210. magenta()
  211. {    if(mono) 
  212.         return(0);
  213.     printf("\033[35m");
  214.     if(printer)
  215.         lprintf("\033r3");
  216. }
  217. cyan()    
  218. {    if(mono) 
  219.         return(0);
  220.     printf("\033[36m");
  221.     if(printer)
  222.         lprintf("\033r2");
  223. }
  224. white()    
  225. {    if(mono) 
  226.         return(0);
  227.     printf("\033[37m");
  228.     if(printer)
  229.         lprintf("\033r0");
  230. }
  231.  
  232. orange()
  233. {    if(mono) 
  234.         return(0);
  235.     nor();bwhite();
  236.     printf("\033[33m");
  237.     if(printer)
  238.         lprintf("\033r5");
  239. }
  240.  
  241. bblack()    { printf("\033[40m"); }
  242. bred()        { printf("\033[41m"); }
  243. bgreen()    { printf("\033[42m"); }
  244. byellow()    { printf("\033[43m"); }
  245. bblue()        { printf("\033[44m"); }
  246. bmagenta()    { printf("\033[45m"); }
  247. bcyan()        { printf("\033[46m"); }
  248. bwhite()    { printf("\033[47m"); }
  249. 
  250. ntf("\033[44m"); }
  251. bmagenta()    { printf(